package edu.algo3.algoThief.vista;

import edu.algo3.algoThief.domain.Ciudad;
import edu.algo3.algoThief.domain.Juego;
import edu.algo3.algoThief.util.Constants;



//	Esta clase ya tiene implementados todos los event listener
//	(vacios), pero los tiene.
//	los label funcionan como botones, por lo que
//	ya esta configurado el tipo de puntero cuando se pasa por encima
//	y el evento al hacer click
@SuppressWarnings("serial")
public class VentanaViajes extends javax.swing.JFrame {
	
	// Variables declaration - do not modify
    private VentanaCiudadActual ventanaCiudadActual;
    private Ciudad destino1;
    private Ciudad destino2;
    private Ciudad destino3;
    private javax.swing.JButton botonAtras;
    private javax.swing.JLabel botonViajarACiudad1;
    private javax.swing.JLabel botonViajarACiudad2;
    private javax.swing.JLabel botonViajarACiudad3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel labelViajesTitulo;
    // End of variables declaration   
	
	
    public VentanaViajes(VentanaCiudadActual ventanaCiudadActual) {
        initComponents();
        this.ventanaCiudadActual = ventanaCiudadActual;
        this.destino1 = Juego.getInstance().getJugador().getDestino1();
        this.destino2 = Juego.getInstance().getJugador().getDestino2();
        this.destino3 = Juego.getInstance().getJugador().getDestino3();
        botonViajarACiudad1.setText(destino1.getNombre());
        botonViajarACiudad2.setText(destino2.getNombre());
        botonViajarACiudad3.setText(destino3.getNombre());
    }

   

    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        labelViajesTitulo = new javax.swing.JLabel();
        botonViajarACiudad1 = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        botonViajarACiudad2 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        botonViajarACiudad3 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        botonAtras = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(true);

        labelViajesTitulo.setFont(new java.awt.Font("Stencil", 0, 18)); // NOI18N
        labelViajesTitulo.setText("VIAJES");

        botonViajarACiudad1.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
        botonViajarACiudad1.setForeground(new java.awt.Color(0, 51, 102));
        botonViajarACiudad1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        botonViajarACiudad1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonViajarACiudad1MouseClicked(evt);
            }
        });

        jLabel1.setText(Constants.VIAJAR_A);

        botonViajarACiudad2.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
        botonViajarACiudad2.setForeground(new java.awt.Color(0, 51, 102));
        botonViajarACiudad2.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        botonViajarACiudad2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonViajarACiudad2MouseClicked(evt);
            }
        });

        jLabel2.setText(Constants.VIAJAR_A);

        botonViajarACiudad3.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
        botonViajarACiudad3.setForeground(new java.awt.Color(0, 51, 102));
        botonViajarACiudad3.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        botonViajarACiudad3.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonViajarACiudad3MouseClicked(evt);
            }
        });

        jLabel3.setText(Constants.VIAJAR_A);

        botonAtras.setBackground(new java.awt.Color(139, 27, 27));
        botonAtras.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        botonAtras.setForeground(new java.awt.Color(255, 255, 255));
        botonAtras.setText(Constants.ATRAS);
        botonAtras.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAtrasActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(botonAtras)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(labelViajesTitulo)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jLabel1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(botonViajarACiudad1))
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jLabel2)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(botonViajarACiudad2))
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jLabel3)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(botonViajarACiudad3))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(labelViajesTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(41, 41, 41)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonViajarACiudad1)
                    .addComponent(jLabel1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonViajarACiudad2)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonViajarACiudad3)
                    .addComponent(jLabel3))
                .addGap(28, 28, 28)
                .addComponent(botonAtras)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void botonAtrasActionPerformed(java.awt.event.ActionEvent evt) {                                           
        this.setVisible(Boolean.FALSE);
    }                                          

    private void botonViajarACiudad1MouseClicked(java.awt.event.MouseEvent evt) {                                                 
        Juego.getInstance().getJugador().viajar(this.destino1);
        this.ventanaCiudadActual.actualizarDatosCiudad();
        this.setVisible(Boolean.FALSE);
        this.ventanaCiudadActual.setVisible(Boolean.TRUE);
        if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
            new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.SE_HA_ACABADO_EL_TIEMPO);
        } else if (Juego.getInstance().getCondicionDeTriunfo().estaEnCiudadDondeEstaElLadron()){
            if (Juego.getInstance().getCondicionDeTriunfo().emitioLaOrdenDeArrestoCorrecta()){
                Juego.getInstance().getJugador().recibirHeridaDeArmaDeFuego();
                if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
                    new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.DISPARO_Y_SE_ESCAPO);
                } else {
                    Juego.getInstance().getJugador().setArrestos(Juego.getInstance().getArrestosJugador() + 1);
                    new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.FELICITACIONES_ATRAPASTE_AL_LADRON);
                }
            } else {
                new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.ORDEN_DE_ARRESTO_MAL_EMITIDA);
            }
        }
    }                                                

    private void botonViajarACiudad2MouseClicked(java.awt.event.MouseEvent evt) {                                                 
        Juego.getInstance().getJugador().viajar(this.destino2);
        this.ventanaCiudadActual.actualizarDatosCiudad();
        this.setVisible(Boolean.FALSE);
        this.ventanaCiudadActual.setVisible(Boolean.TRUE);
        if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
            new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.SE_HA_ACABADO_EL_TIEMPO);
        } else if (Juego.getInstance().getCondicionDeTriunfo().estaEnCiudadDondeEstaElLadron()){
            if (Juego.getInstance().getCondicionDeTriunfo().emitioLaOrdenDeArrestoCorrecta()){
                Juego.getInstance().getJugador().recibirHeridaDeArmaDeFuego();
                if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
                    new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.DISPARO_Y_SE_ESCAPO);
                } else {
                    Juego.getInstance().getJugador().setArrestos(Juego.getInstance().getArrestosJugador() + 1);
                    new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.FELICITACIONES_ATRAPASTE_AL_LADRON);
                }
            } else {
                new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.ORDEN_DE_ARRESTO_MAL_EMITIDA);
            }
        }
    }                                                

    private void botonViajarACiudad3MouseClicked(java.awt.event.MouseEvent evt) {                                                 
        Juego.getInstance().getJugador().viajar(this.destino3);
        this.ventanaCiudadActual.actualizarDatosCiudad();
        this.setVisible(Boolean.FALSE);
        this.ventanaCiudadActual.setVisible(Boolean.TRUE);
        if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
            new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.SE_HA_ACABADO_EL_TIEMPO);
        } else if (Juego.getInstance().getCondicionDeTriunfo().estaEnCiudadDondeEstaElLadron()){
            if (Juego.getInstance().getCondicionDeTriunfo().emitioLaOrdenDeArrestoCorrecta()){
                Juego.getInstance().getJugador().recibirHeridaDeArmaDeFuego();
                if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
                    new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.DISPARO_Y_SE_ESCAPO);
                } else {
                    Juego.getInstance().getJugador().setArrestos(Juego.getInstance().getArrestosJugador() + 1);
                    new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.FELICITACIONES_ATRAPASTE_AL_LADRON);
                }
            } else {
                new PanelJuegoTerminado(this.ventanaCiudadActual, Constants.JUEGO_TERMINADO, Constants.ORDEN_DE_ARRESTO_MAL_EMITIDA);
            }
        }
    }                                                

}
